Traditional development of software involves the direct coding of a program or a business process. Traditional coding resulted in a great deal of custom development of basic components used in a program or business process, including business objects. Even when modeling software through a modeling framework, many components of system development were designed for a specific application, without looking to reuse of the components. An enterprise could end up with a large amount of similar basic components, and non-standardized applications and processes. The accumulation of such components is a result of duplicated programming effort, which represents inefficiencies in the development of systems.
Besides the duplication of effort, traditional systems require a user to choose from a very large amount of potential components and systems. Traditional systems were incapable of encouraging design that was focused on standardization and component reuse.